

package svpo;

import Validation.Hora;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author gus
 */
public class CadastraLinha {
    /**Gerando o objeto de log**/
    private static Logger log = Logger.getLogger(CadastraLinha.class.getName());
    
    
    /**Objeto que realiza as validações*/
    Valida v = new Valida();
    
    //Atributos de linha
    private String numLinha, empresa, rodoOut, rodoIn , horaOut , horaIn , preco , origem , destino  ;
    int status ;
    
    /** Criando Arquivo que armazenará os dados. */
    private static RandomAccessFile arquivo;
    private String nomeArq = java.util.ResourceBundle.getBundle("svpo/Bundle").getString("LINHA.TXT");
    
    /** <b> Método get para o nome da empresa da linha.
     * sem parametros
     */
    public String getEmpresa() {
        log.info(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("CNPJ DA EMPRESA RETORNADO"));
        return empresa;
        
    }
    /** <b> Método set para a empresa da linha.
     * @param empresa Empresa da linha
     */
    public void setEmpresa(String empresain) {
        
         if(v.ValidaCnpj(empresain)==true){             
            this.empresa = empresain;
            log.fine(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("EMPRESA SETADA"));
        }else{
            JOptionPane.showMessageDialog(null, java.util.ResourceBundle.getBundle("svpo/Bundle").getString("NOME DA EMPRESA INVÁLIDO"), java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERROR"), JOptionPane.ERROR_MESSAGE);
            log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("NOME DA EMPRESA INVÁLIDO"));
        }
    }
    /** <b> Método get para o horario de saida da linha.
     * sem parametros
     */
    public String getHoraOut() {
        log.info(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("HORA DE SAÍDA RETORNADA"));
        return horaOut;
    }
    /** <b> Método set para o horario de saida.
     * @param horaOut hora de saida da linha
     */
    public void setHoraOut(String horaOutin) {
        try {
            if (Hora.validarHora(horaOutin)) {
                this.horaOut = horaOutin;
                log.fine(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("HORA DE SAÍDA SETADA COM SUCESSO."));
            } else {
                JOptionPane.showMessageDialog(null, java.util.ResourceBundle.getBundle("svpo/Bundle").getString("HORA INVÁLIDA"), java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERROR"), JOptionPane.ERROR_MESSAGE);
                this.horaOut = null;
                log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("HORA INVÁLIDA."));
            }
        } catch (ParseException ex) {
            Logger.getLogger(CadastraLinha.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }
    /** <b> Método get para o horario de chegada da linha.
     * sem parametros
     */
    public String getHoraIn() {
        log.info(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("HORA DE CHEGADA RETORNADA"));
        return horaIn;
    }
    
    /** <b> Método set para o horario de saida.
     * @param horaOut hora de saida da linha
     */
   public void setHoraIn(String horaInin) {
        try {
            if (Hora.validarHora(horaInin)) {
                this.horaIn = horaInin;
                log.fine(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("HORA DE CHEGADA SETADA COM SUCESSO."));
            } else {
                JOptionPane.showMessageDialog(null, java.util.ResourceBundle.getBundle("svpo/Bundle").getString("HORA INVÁLIDA"), java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERROR"), JOptionPane.ERROR_MESSAGE);
                this.horaOut = null;
                log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("HORA INVÁLIDA."));
            }
        } catch (ParseException ex) {
            Logger.getLogger(CadastraLinha.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    } 
   
    /** <b> Método get para o numero da linha.
     * sem parametros
     */
    public String getNumLinha() {
        log.info(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("NÚMERO DA LINHA RETORNADO"));
        return numLinha;
    }
    /** <b> Método set para o numero da linha.
     * @param numLinha numero da Linha
     */
    public void setNumLinha(String numLinhain) {
        try{
            this.numLinha = numLinhain;
            log.fine(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("NÚMERO DA LINHA SETADO"));
        }catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, java.util.ResourceBundle.getBundle("svpo/Bundle").getString("NÚMERO DE LINHA INVÁLIDO."), java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERROR"), JOptionPane.ERROR_MESSAGE);
            this.numLinha = null;
            log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("NÚMERO DE LINHA INVÁLIDO"));
        }
    }
    /** <b> Método get para a rodoviaria de saida da linha.
     * sem parametros
     */
    public String getRodoOut() {
        log.info(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("RODOVIÁRIA DE SAÍDA RETORNADA"));
        return rodoOut;
    }
    
    /** <b> Método set para a rodoviaria de saida da linha.
     * @param rodoOut rodoviaria de saida
     */
    public void setRodoOut(String rodoOutin) {
        if(v.validaNome(rodoOutin)==1){
             log.fine(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("RODOVIÁRA DE SAÍDA SETADA."));
             this.rodoOut = rodoOutin;
        }else{
            log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("RODOVIÁRIA DE SAÍDA INVÁLIDA"));
            JOptionPane.showMessageDialog(null, java.util.ResourceBundle.getBundle("svpo/Bundle").getString("RODIÁRIA DE SAÍDA INVÁLIDA"), java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERROR"), JOptionPane.ERROR_MESSAGE);
            this.rodoOut = null;
        }
       
    }
    
    /** <b> Método get para a rodoviaria de chegada da linha.
     * sem parametros
     */
    public String getRodoIn() {
        log.info(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("RODOVIÁRIA DE CHEGADA RETORNADA"));
        return rodoOut;
    }
    
     /** <b> Método set para a rodoviaria de chegada da linha.
     * @param rodoOut rodoviaria de chegada
     */
    public void setRodoIn(String rodoInin) {
        if(v.validaNome(rodoInin)==1){
             this.rodoIn = rodoInin;
             log.fine(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("RODOVIÁRIA DE CHEGADA SETADA."));
        }else{
            JOptionPane.showMessageDialog(null, java.util.ResourceBundle.getBundle("svpo/Bundle").getString("NOME DA RODOVIÁRIA INVÁLIDA"), java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERROR"), JOptionPane.ERROR_MESSAGE);
            log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("NOME DA RODOVIÁRIA INVÁLIDA"));
            this.rodoIn = null;
        }
       
    }
    
    /** <b> Método get para o numero da linha.
     * sem parametros
     */
    public String getPreco() {
        log.info(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("PREÇO RETORNADO"));
        return preco;
    }
    /** <b> Método set para o Preço.
     * @param  preco Preço numero da Linha
     */
    public void setPreco(String precoin) {
        try{
            this.preco = precoin;
            log.fine(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("PREÇO SETADO"));
        }catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, java.util.ResourceBundle.getBundle("svpo/Bundle").getString("PREÇO INVÁLIDA"), java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERROR"), JOptionPane.ERROR_MESSAGE);
            log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("PREÇO INVÁLIDO"));
            this.preco = null;
        }
    }
    
    /** <b> Método get para origem da linha.
     * sem parametros
     */
    public String getOrigem() {
        log.info(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ORIGEM RETORNADA"));
        return origem;
        
    }
    /** <b> Método set origem da linha.
     * @param origem Origem da linha
     */
    public void setOrigem(String origemin) {
        
         if(v.validaNome(origemin)==1){
            this.origem = origemin;
            log.fine(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ORIGEM SETADA COM SUCESSO."));
        }else{
            JOptionPane.showMessageDialog(null, java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ORIGEM  INVÁLIDA"), java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERROR"), JOptionPane.ERROR_MESSAGE);
            log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ORIGEM INVÁLIDA"));
            this.origem = null;
        }
    }
    
    /** <b> Método get para o nome da empresa da linha.
     * sem parametros
     */
    public String getDestino() {
        log.info(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("DESTINO RETORNADO"));
        return destino;
        
    }
    /** <b> Método set para a destino da linha.
     * @param destino Destino da linha
     */
    public void setDestino(String destinoin) {
        
         if(v.validaNome(destinoin)==1){
            this.destino = destinoin;
            log.fine(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("DESTINO SETADO COM SUCESSO."));
        }else{
            JOptionPane.showMessageDialog(null, java.util.ResourceBundle.getBundle("svpo/Bundle").getString("DESTINO  INVÁLIDO"), java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERROR"), JOptionPane.ERROR_MESSAGE);
            log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("DESTINO INVÁLIDO"));
            this.destino = null;
        }
    }
    
     /** <b> Método get para o status da empresa da linha.
     * sem parametros
     */
    public int getStatus() {
        log.info(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("STATUS RETORNADO"));
        return status;
        
    }
    /** <b> Método set para o status da linha.
     * @param status Status da linha
     */
    public void setStatus(int statusin) {
        
         this.status = statusin;
         log.fine(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("STATUS FOI SETADO"));
        }
     public void salvar(String numLinha, String Empresa, String rodoOut, 
                        String rodoIn, String horaOut, String horaIn,
                        String preco, String status){

    
        try {
            arquivo = new RandomAccessFile(new File(nomeArq), java.util.ResourceBundle.getBundle("svpo/Bundle").getString("RW"));
            log.fine(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ARQUIVO ABERTO COM SUCESSO"));
        } catch (FileNotFoundException e) {
            JOptionPane.showMessageDialog(null, java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ARQUIVO INEXISTENTE"), java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERROR"), JOptionPane.ERROR_MESSAGE);
            log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ARQUIVO INEXISTENTE!"));
        }

        try {
            
            arquivo.seek(arquivo.length());

            arquivo.writeBytes(numLinha + java.util.ResourceBundle.getBundle("svpo/Bundle").getString("\n"));
            arquivo.writeBytes(empresa + java.util.ResourceBundle.getBundle("svpo/Bundle").getString("\n"));
            arquivo.writeBytes(rodoOut + java.util.ResourceBundle.getBundle("svpo/Bundle").getString("\n"));            
            arquivo.writeBytes(rodoIn + java.util.ResourceBundle.getBundle("svpo/Bundle").getString("\n"));
            arquivo.writeBytes(horaOut + java.util.ResourceBundle.getBundle("svpo/Bundle").getString("\n"));
            arquivo.writeBytes(horaIn + java.util.ResourceBundle.getBundle("svpo/Bundle").getString("\n"));
            arquivo.writeBytes(preco + java.util.ResourceBundle.getBundle("svpo/Bundle").getString("\n"));
            arquivo.writeBytes(status + java.util.ResourceBundle.getBundle("svpo/Bundle").getString("\n"));

            arquivo.seek(0);
            JOptionPane.showMessageDialog(null, java.util.ResourceBundle.getBundle("svpo/Bundle").getString("CADASTRO EFETUADO COM SUCESSO!"), "", JOptionPane.INFORMATION_MESSAGE);
            log.fine("Cadastro efetuado com sucesso");

        } catch (IOException e) {
            JOptionPane.showMessageDialog(null, "Erro ao escrever no arquivo", "ERROR", JOptionPane.ERROR_MESSAGE);
            log.severe("Erro ao escrever no arquivo");
        }

        
    

}
    
    
    }  
    

